public class CoordinateArithmetic {

//    /**
//     * Check a given position is inside the limited range.
//     */
//    private boolean inLimitedRegion(double longitude, double latitude) {
//        double minLongitude = -180;
//        double maxLongitude = 180;
//        double minLatitude = -90;
//        double maxLatitude = 90;
//        return longitude > minLongitude && longitude < maxLongitude && latitude > minLatitude && latitude < maxLatitude;
//    }

    private void validate(double longitude, double latitude) {
        if (longitude < -180 || longitude > 180 || latitude < -90 || latitude > 90) {
            throw new RuntimeException("invalid value");
        }
    }

    /**
     * Check a given position is inside the specialized rectangular region;
     */
    public boolean inRectangularRegion(double NWLongitude, double NWLatitude, double SELongitude, double SELatitude, double pLongitude, double pLatitude) {
        this.validate(NWLongitude, NWLatitude);
        this.validate(SELongitude, SELatitude);
        this.validate(pLongitude, pLatitude);

        return NWLongitude < SELongitude ?
                pLongitude > NWLongitude && pLongitude < SELongitude && pLatitude < NWLatitude && pLatitude > SELatitude :
                !(pLongitude > SELongitude && pLongitude < NWLongitude) && pLatitude < NWLatitude && pLatitude > SELatitude;
    }

    public static void main(String[] args) {
        CoordinateArithmetic coordinateArithmetic = new CoordinateArithmetic();
        boolean result = coordinateArithmetic.inRectangularRegion(50, 50, -170, -50, 51, 49);
        if (result) {
            System.out.println("in rectangular region ");
        } else {
            System.out.println("out of rectangular region ");
        }
    }

}
